package com.example.toy.core.commit;

/**
 * CommitType
 *  <p>
 *      DELETE、INSERT_OVERWRITE、INSERT_OVERWRITE_PARTITION 支持软删除和硬删除，通过 toy.commit.hard_commit_enabled 配置
 *      <li>1. 软删除后，数据经过compact压缩，也始终保存在文件内部，标记为删除状态</li>
 *      <li>1. 硬删除后，数据经过compact压缩，会从原始文件中移除 </li>
 *
 *  </p>
 * @author shenbing
 * @date 2021/12/20
 */
public enum CommitType {
  /** 表初始化 */
  INIT,

  /** 插入，相同ID会冲突导致失败 */
  INSERT,
  /** 插入或更新 */
  UPSERT,
  /** 更新 */
  UPDATE,
  /** 删除数据 */
  DELETE,
  /** 全表覆盖 */
  INSERT_OVERWRITE,
  /** 只覆盖出现的分区 */
  INSERT_OVERWRITE_PARTITION,

  /** 数据合并 */
  COMPACT,

  /** 字段修改*/
  ALTER_COLUMN
}
